package progweb.project.Manager;


import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import java.sql.Timestamp;
import org.apache.log4j.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Davide Bonomelli
 */
public class Richiamo implements Comparable {
    private static org.apache.log4j.Logger log=Logger.getLogger(Richiamo.class);
    private int id_richiamo;
    private Medico medico;
    private Paziente paziente;
    private Timestamp data;
    
    public Richiamo(){}
    
    public Richiamo(int id, Medico m, Paziente p, Timestamp  d){
        this.id_richiamo=id;
        this.medico=m;
        this.paziente=p;
        this.data=d;
    }
    
    public Richiamo(ResultSet queryResult){
        try{
            while(queryResult.next()){
                this.id_richiamo=queryResult.getInt("id_richiamo");
                this.medico=DBManager.getMedicoFromId(queryResult.getInt("medico"));
                this.paziente=DBManager.getPazienteFromId(queryResult.getInt("paziente"));
                this.data= Timestamp.valueOf(queryResult.getString("data"));
            }
            Statement stmt = (Statement) queryResult.getStatement();
            queryResult.close();
            stmt.close();
        }catch(Exception e){
            log.error("", e);
        }
    }
    
    @Override
    public String toString(){
        String s="";
        s+=this.id_richiamo+"\n-MEDICO ->"+this.medico+" \n-PAZIENTE ->"+this.paziente+"\n-DATA->"+this.data;
        return s;
    }
    
    public void setId(int newId){
        this.id_richiamo=newId;
    }
    public void setMedico(Medico newMedico){
        this.medico=newMedico;
    }
    public void setPaziente(Paziente newPaziente){
        this.paziente=newPaziente;
    }
    public void setData(Timestamp newData){
        this.data=newData;
    }
    
    public int getId(){
        return this.id_richiamo;
    }
    public Medico getMedico(){
        return this.medico;
    }
    public Paziente getPaziente(){
        return this.paziente;
    }
    public Timestamp getData(){
        return this.data;
    }
    public String getDataSenzaMs(){
        String data = this.data.toString();
        return data.substring(0, 19);
    }
    
    @Override
    public int compareTo(Object o) {
        return - this.data.compareTo(((Richiamo)o).data);
    }
    
    @Override
    public boolean equals(Object o){
        if(this.id_richiamo==((Richiamo)o).id_richiamo && this.data.equals(((Richiamo)o).data) && this.medico.equals(((Richiamo)o).medico) && this.paziente.equals(((Richiamo)o).paziente))
            return true;
        return false;
    }
}
